package com.eoekun.dashboard.model.enums;

import java.util.HashMap;
import java.util.Map;
import javax.validation.constraints.NotNull;

/**
 * 参数类型(1.参数类型,2.任务状态,3.任务类型,4.月度范围,5.友情链接,6.滚动tip,7.优先级,8.jira前缀,9.项目列表,10.开发成员,11.测试成员)
 * 
 * @author chenkun
 * @createTime 2019年11月22日 下午03:29:36
 */
public enum ParamTypeEnum {
    // @formatter:off
    /**
     * 1.参数类型
     */
    参数类型(1, "参数类型"),
    /**
     * 2.任务状态
     */
    任务状态(2, "任务状态"),
    /**
     * 3.任务类型
     */
    任务类型(3, "任务类型"),
    /**
     * 4.月度范围
     */
    月度范围(4, "月度范围"),
    /**
     * 5.友情链接
     */
    友情链接(5, "友情链接"),
    /**
     * 6.滚动tip
     */
    滚动tip(6, "滚动tip"),
    /**
     * 7.优先级
     */
    优先级(7, "优先级"),
    /**
     * 8.jira前缀
     */
    jira前缀(8, "jira前缀"),
    /**
     * 9.项目列表
     */
    项目列表(9, "项目列表"),
    /**
     * 10.开发成员
     */
    开发成员(10, "开发成员"),
    /**
     * 11.测试成员
     */
    测试成员(11, "测试成员"),
    ;
    // @formatter:on
    private Integer value;
    private String text;

    private ParamTypeEnum(Integer value, String text) {
        this.value = value;
        this.text = text;
    }

    /**
     * 
     * @param value
     * @return 若为空,则返回空字符串
     * @author chenkun
     * @createTime 2019年11月22日 下午03:29:36
     */
    public static String getText(Integer value) {
        for (ParamTypeEnum enmm : ParamTypeEnum.values()) {
            if (enmm.getValue().equals(value)) {
                return enmm.getText();
            }
        }
        return "";
    }

    /**
     * 
     * @param text
     * @return Integer 若不存在,则返回null
     * @author chenkun
     * @createTime 2019年11月22日 下午03:29:36
     */
    public static Integer getValue(String text) {
        for (ParamTypeEnum enmm : ParamTypeEnum.values()) {
            if (enmm.getText().equals(text)) {
                return enmm.getValue();
            }
        }
        return null;
    }

    public static ParamTypeEnum getEnumByValue(Integer value) {
        for (ParamTypeEnum enmm : ParamTypeEnum.values()) {
            if (enmm.getValue().equals(value)) {
                return enmm;
            }
        }
        return null;
    }

    public static ParamTypeEnum getEnumByText(String text) {
        for (ParamTypeEnum enmm : ParamTypeEnum.values()) {
            if (enmm.getText().equals(text)) {
                return enmm;
            }
        }
        return null;
    }

    public static @NotNull Map<Integer, String> toMap() {
        Map<Integer, String> map = new HashMap<>();
        for (ParamTypeEnum enmm : ParamTypeEnum.values()) {
            map.put(enmm.value, enmm.text);
        }
        return map;
    }

    public Integer getValue() {
        return value;
    }

    public String getText() {
        return text;
    }

}
